1. Field of the Invention
The present invention relates to an apparatus, method, and system for controlling a stepping motor. More particularly, the present invention relates to a stepping motor controller, method, and system that drive a stepping motor in accordance with given command signals.
2. Description of the Related Art
Stepping motors, also known as step motors or stepper motors, are used in a wide range of applications such as laser printers, digital copiers, and industrial robots. Those devices take advantage of high rotational accuracy of stepping motors.
FIGS. 4 to 6 show a simplified model of a stepping motor to give an overview of how a typical stepping motor works. The illustrated stepping motor 100 has a rotor 101 in its central position, with north (N) and south (S) poles arranged alternately. This rotor 101 is surrounded by stator coils including a phase-B coil 102, a phase-A coil 103, a phase-B′ coil 104, and a phase-A′ coil 105. The magnetic poles of the stator coils can be controlled electrically by varying the voltages applied to (or the currents flowing through) those coils 102 to 105.
Specifically, FIG. 4 shows a state where the phase-A coil 103 and phase-A′ coil 105 create S and N poles, respectively, while the other coils 102 and 104 are not energized. The S pole of the phase-A coil 103 attracts an N pole of the rotor 101, while the N pole of the phase-A′ coil 105 attracts an S pole of the rotor 101. FIG. 5 then shows a subsequent state of the stepping motor 100, in which the stator poles are changed such that the phase-B coil 102 and phase-B′ coil 104 produce S and N poles, respectively, while the phase-A coil 103 and phase-A′ coil 105 are de-energized. This change causes the rotor 101 to turn clockwise by 30 degrees. FIG. 6 shows another 30-degree rotation of the rotor 101. This is accomplished by exciting the phase-A coil 103 and phase-A′ coil 105 to create N and S poles, respectively, while de-energizing the other two coils 102 and 104. As can be seen from FIGS. 4 to 6, the stator poles are varied successively by switching the current of motor coils, attracting the corresponding rotor poles and thereby turning the rotor 101 continuously. Stepping motors generally operate in this way.
A motor driver circuit (not shown) is designed to drive such a stepping motor in accordance with some command signals generated by, for example, a central processing unit (CPU). That is, the CPU is used to produce appropriate pulse signals to control the rotation speed and angle of the stepping motor. The driver circuit controls the pattern of energizing motor coils according to the given pulse signals, thus running the motor. A desired rotation speed and angular position can be obtained in this case by controlling the frequency and the number of pulses given to the driver circuit.
Such a CPU-based stepping motor control system can also subdivide each main step (e.g., 90 degrees in the example of FIGS. 4 to 6) into smaller steps by varying the pulse width modulation (PWM) duty cycle of motor coil current of each pole. That is, the use of a CPU in coil current control makes it possible to increase the angle resolution by several to several ten times, thus enabling smooth and accurate rotation of the rotor.
Conventional systems control the rotation speed and angle of a stepping motor according to control signals produced by a CPU. However, recent years have seen an increased demand for more accurate rotation control as the application of stepping motors expands to the high-performance market. This means that the motor control CPU has to deal with a higher load of control tasks, which leads to a circuit design using a special CPU that is dedicated to stepping motor control. See, for example, Japanese Patent Application Publication No. 7-322696 (1995).
The conventional CPU-based motor control, however, has a drawback. Specifically, think of what the CPU needs to do in a stepping motor system to achieve a single revolution of the output axis. The number of control commands for one revolution is calculated as a product of the number of rotor poles and the number of steps. This number may be further multiplied by the reduction factor in the case where a reduction mechanism is involved. Suppose, for example, that the rotor has six poles, the pole interval is divided into sixteen steps, and the reduction ratio is 1/24. In this case, the number of control commands that the CPU has to generate for a single revolution will amount to 2304(=6×16×24). In addition to generating those current control commands, the CPU has to perform calculation for acceleration and deceleration to start and stop the motor smoothly. As can be seen from the above, a large processing burden is imposed on the motor control CPU in a conventional stepping motor controller. This is also true in the above-mentioned Japanese Patent Application Publication No. 7-322696 since it has to transfer a set of energizing pattern data for each single command pulse.